package compilador_v1;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import javax.swing.JOptionPane;

public class Analisador {

    String token = "";
    String numero = "";
    boolean identificado;
    Gramatica g = new Gramatica();
    int contlinha;

    public Analisador() {
    }

    public void Ler(InputStream is) throws IOException {

        BufferedReader bf = new BufferedReader(new InputStreamReader(is));
        int caracter = 0;
        contlinha = 1;


        while ((caracter = bf.read()) != -1) {
            identificado = false;
            System.out.println((char) caracter);
            Classifica((char) caracter);

        }
    }

    public void Classifica(char c) {
        if (Character.isLetter(c)) {
            //se for letra, concatena e parte para próxima
            token += c;
        } else if (c == ' ') {
            token = "";
        } else if (c == '\n') {
            contlinha++;
            token = "";

        } else if (c == '\t') {
            token = "";
        } else if (Character.isDigit(c)) {
            //se for numero, concatena e parte para próxima
            token += c;
            numero += c;
        } else if (c == '.') {
            if ((Character.isDigit(numero.charAt(0))) && (Character.isDigit(numero.charAt(numero.length())))) {
                //se for ponto, concatena se tiver numero no inicio e fim do token de numero ja registrado
                numero += c;
            }else if ((numero.charAt(numero.length()) == '.')){
                
            }

        }
        VerificarToken();


        /*
         * } else { token = ""; }
         */
    }

    public void VerificarToken() {
        System.out.println("token = " + token);
        ArrayList<Token> palavrasre = g.getPalavrasre();
        //Percorre a lista buscando o token informado
        for (int i = 0; i < palavrasre.size(); i++) {
            System.out.println("token do array: " + palavrasre.get(i).getElemento());
            if (palavrasre.get(i).getElemento().equals(token)) {
                JOptionPane.showMessageDialog(null, "Código: " + palavrasre.get(i).getCodigo() + "\n Linha: " + contlinha);
                token = "";
                break;
            }

        }

    }
}